home *** CD-ROM | disk | FTP | other *** search
/ Info-Mac 4 / Info_Mac IV CD-ROM (Pacific HiTech Inc.)(August 1994).iso / Development / General / Open Prolog / Documents / Revision History < prev    next >
Text File  |  1994-03-04  |  25KB  |  454 lines

  1. ◊ Open Prolog Revision History
  2.  
  3. - 1.0.2d2
  4.  
  5. •• New Features.
  6.  
  7. • A new external predicate has been added: 'system$multiple$choice'/15. It is also presented as a sample external predicate, written in MPW pascal.
  8.  
  9. 'system$multiple$choice'/15 presents a dialog containing an OK button, an optional second button, an optional message and up to five edit boxes, each with its own prompt.
  10. It returns the text of the button pressed.
  11.  
  12. 'system$multiple$choice'(DialogNameAtom,MessageString,OKButtonNameAtom,SecondButtonNameAtom,ReplyAtom,
  13. Prompt1String,Return1String,
  14. Prompt2String,Return2String,
  15. Prompt3String,Return3String,
  16. Prompt4String,Return4String,
  17. Prompt5String,Return5String).
  18.  
  19. If the SecondButtonNameAtom is '', then the button doesn't appear.
  20. The MessageString and the PromptStrings and ReturnStrings are all lists of integers, each integer being the ASCII of the character (useful for parsing with DCGs).
  21. If a PromptString is [] (i.e. nothing) then neither it nor its corresponding edit box will appear on the dialog. Thus you can control the number of multiple answers available.
  22.  
  23. Here is an example:
  24. 'system$multiple$choice'(
  25.         'Sample Dialog…',
  26.         "This is a sample message",
  27.         'Oui',
  28.         'Non',
  29.         ReplyAtom,
  30.          "Prompt for a string here",Return1String,
  31.          "",Return2String,    %invisible second choice
  32.          "…and here too…",Return3String,
  33.          "",Return4String, %invisible fourth choice
  34.          "…finally, here.",Return5String).
  35.  
  36. • the external predicate libraries have been augmented and cleaned up a little. There's no need for you to relink unless you want to…
  37.  
  38. - 1.0.1
  39.  
  40. •• New Features
  41.  
  42. • Sample Speech Manager external predicates added: speakAtom(Atom) and speechBusy(NumberOfChannels). They are very basic, and offer approximately the same capability as Macintalk did. Sample code is included in External Predicates. These predicates need the Sound Manager to be present - they throw errors if it's not there.
  43.  
  44. speakAtom('Hello; welcome to Open Prolog.'),speakAtom('Have a nice day'),speechBusy(Channels).
  45.  
  46. • findall/3 is now implemented as a built-in predicate.
  47.  
  48. •• Improvements and Bug Fixes
  49.  
  50. • Buffering of output to a window improved - 255 byte buffer limit is gone, and output of long text with no CRs in it (e.g. trace dumps!) is much faster. Slightly better cursor animation too.
  51.  
  52. •    Doesn't complain if all temporary memory is gone in a System 7 machine.
  53.  
  54. • Slightly better memory management - minimum partition is down to 600K.
  55.  
  56. • Slightly better external predicate error reporting.
  57.  
  58. • Fixed two mistakes in the 'Getting Started' document.
  59.  
  60. • Parses and ignores the directive dynamic/1 - it's not used in Open Prolog.
  61.  
  62. • writeq/1 and printq/1 now put quotes around an atom beginning with an underscore.
  63.  
  64. - 1.0
  65.  
  66. •• This is 1.0d50, now (finally) promoted to full version 1.0.
  67.  
  68. •• Bug Fixes
  69.  
  70. • Puzzling behaviour of nested if-then & if/then/elses. If-thens ( -> ) were a little too busy removing alternatives to the disjunctions they were nested in; they removed the choice from the nearest disjunction, no matter how far up the choice-point stack it was. (In fact, if-thens shouldn't remove any choice points.) This is now fixed.
  71.  
  72. - 1.0d49
  73.  
  74. •• Bug Fixes
  75.  
  76. • Writing a curly-bracketed term works correctly. E.g. write({this,that}) now gives:
  77. {this,that}
  78. It used to yield: {}(,(this,that))
  79.  
  80. - 1.0d48
  81.  
  82. •• Bug Fixes
  83.  
  84. • Fixed a Menu problem that caused OP to crash with BeHierarchic. Now works with it (1.0.5) and with Apollo 1.0.
  85.  
  86. - 1.0d47
  87.  
  88. •• Bug Fixes
  89.  
  90. •    Added a volume flush after a writable file is closed. If the system crashes,
  91. it's more likely that saved files will be up to date on restarting.
  92.  
  93. •    Fixed a bug introduced in 1.0d46 (!) in length/2, whereby it complained about the length of the empty list!
  94.  
  95. - 1.0d46
  96.  
  97. •• Bug Fixes
  98.  
  99. • Fixed a bug which caused problems when a prefix operator without an argument
  100.  was read.
  101.  
  102. •    Added a check to length/2 so that the first argument must be instantiated.
  103.  
  104. - 1.0d45
  105.  
  106. •• Bug Fixes
  107.  
  108. • Fixed a bug which occasionally caused a crash when you used Command-(.)
  109.   (a menu manager error)
  110.  
  111. •    Fixed a bug when a syntax error occured due to an incomplete term at the end of a file.
  112.  
  113. •    Fixed a bug which made the error handler lose the error message file.
  114.  
  115. - 1.0d44
  116.  
  117. •• Bug fixes
  118.  
  119. • Formatting errors fixed
  120.  
  121. - 1.0d43
  122.  
  123. •• New Features
  124.  
  125. • The 'reader starting point' (which has always been present in Open Prolog) is now visible, so you can see what's really happening when you do single-line-selection.
  126. Recall that Open Prolog is trying to provide the features of a line-oriented editor without losing the facilities of the Mac interface. To do this, a 'reader starting point' is maintained automatically, and it is used as follows.
  127. Whenever you do a single-line-selection entry, the reader decides where to start reading from by going back from the caret towards the start of the line.
  128. If it reaches the start of the line, that's OK - reading will start from the start of the line. If, however, it reaches the 'reader starting point', it will start from there. To see why something like this is needed, consider the following:
  129.  
  130. write('Enter a term after the prompt.'),nl,write('>> '),read(X).
  131.  
  132. This is typical of line-oriented user interface. Try it, and watch where the reader starting point goes. Without the 'reader starting point', the reader would try to input the prompt itself as part of the term.
  133.  
  134. Note that, as before, if you do normal Mac selection, the reader starting point is ignored.
  135.  
  136. •• Bug Fixes
  137.  
  138. • Fixed some bugs in the reader and writer. There were problems in both when dealing
  139. with prefix operators - some bugs even caused OP to crash. They have been mostly resolved. Here is one that has not been resolved:
  140. :-op(500,fy,++),op(500,yf,++),op(500,xfy,++).
  141. display(a ++ ++ ++ b).
  142. This is legal if you make the first ++ an infix operator and the second and third prefix operators. However, OP's reader commits to the first ++ being postfix.
  143. ISO Prolog forbids multiple operator definitions for the same name, so the problem
  144. is rather less important.
  145.  
  146. - 1.0d42
  147.  
  148. •• New Features
  149.  
  150. • Open Prolog no longer relies on the file Syserrs.Err for error information - instead, this data has been incorporated into Open Prolog itself. Remove it from your System Folder if no other applications use it.
  151.  
  152. •• Bug Fixes
  153.  
  154. •    Fixed a bug which initialised the predicates in a PRLX resource in the wrong order. This bug only has an effect if the predicates share common data structures - what is supposed to be the first predicate to be initialised (and hence the one to allocate the shared storage) was actually being initialised last. Oops. Sorry... Now, the predicates are initialised in ascending numerical order, as advertised.
  155.  
  156. - 1.0d41
  157.  
  158. •• New Features
  159.  
  160. •    Implemented abs/1, meaning 'absolute value' as an evaluable function.
  161.  
  162. •    A new built-in predicate 'get$prolog$error$message'/2 is implemented. Give it an Open Prolog error code and it returns a message. OP error codes start at -32767 and work upwards towards 0.
  163.  
  164. • The built-in predicate 'get$error$message'/2 has been renamed to 'get$host$error$message'. First argument is a Mac error code, second will be the error message atom.
  165.  
  166. •• Bug Fixes
  167.  
  168. •    Fixed a bug in the External Predicate interface which prevented writestr, writelnstr and errorstr messages from being output.
  169.  
  170. - 1.0d40 & 1.0d39 - bug fix releases only
  171.  
  172. •• Bug Fixes
  173.  
  174. •    Two stupid bugs introduced in 38 have been removed. One affected retract/1, the other caused problems when tracing an unknown predicate.
  175.  
  176. - 1.0d38
  177. •• New Features & Improvements
  178.  
  179. •    Open Prolog is now 32-bit clean.
  180.  
  181. •• Bug fixes
  182.  
  183. • Restrictions on maximum character size of a clause, and on the 'depth' or complexity of a term being read have been relaxed.
  184.  
  185. - 1.0d37
  186. •• New Features & Improvements
  187.  
  188. • \(X) added to arithmetic functions, meaning bitwise not.
  189.  
  190. • bagof/3 and setof/3 have been implemented according to the ISO Prolog Draft (except for type and mode checks).
  191.  
  192. • catch-and-throw exception handling has been implemented.
  193. The ISO Prolog Draft of March 27 1992 describes a method - catch-and-throw - of handling exceptional conditions that originate either with a user's program or with the system. Open Prolog now implements the catch/3 and throw/1 predicates as specified in the draft. User programs can use catch and throw for their own exception handling.
  194. The ISO draft has two alternative schemes for handling exceptions due to errors in built-in predicates. Since the draft was written, another scheme has come to prominence, and a version of that is implemented. Please refer to the document entitled 'Exception Handling' for more information.
  195.  
  196. • The ISO Prolog built-in predicates once/1 and fail_if/1 have been implemented. The predicate once(X) is as if defined by once(X) :- call(X),!., and fail_if(X) is exactly the same as not(X).
  197.  
  198. • Finally, after many requests - the built-in \= has been built in (!).
  199.  
  200. • not/1 has been speeded up - now it's as fast as \+.
  201.  
  202. • printing is a little nicer - 36-point borders all round, printer permitting.
  203.  
  204. •    External Predicate interface revised and improved (see separate document). If you have written any external predicates of your own, you'll need to recompile them with the new interface and library files.
  205.  
  206. •• Bug fixes
  207.  
  208. • errors resulting from the stack running out of space during a deep unification, usually as a result of an occur check violation, have been trapped and cause an error to be thrown.
  209.  
  210. •    a deep-seated bug in the garbage collector fixed. It seems this bug only shows up in Mac Pluses running System 6.
  211.  
  212. •    lots of clicking & typing while Open Prolog was starting up would upset it - fixed.
  213.  
  214. • if you tried to print while the About Open Prolog… window was open anywhere (even when hidden), the system hung up.
  215.  
  216. • yet another low-memory bug fixed.
  217.  
  218. • command-. for aborting execution has been improved. Sometimes it didn't work, say when a long term was being written to the screen. Now, it always stops execution, but it doesn't say what predicate was executing at the time. Instead a message of the form error(user_interrupt,_) is thrown. At present, the second argument is an empty list. It will change in future, and external predicates will put information here if they are likewise stopped.
  219.  
  220. • an operator taking a conjunction of arguments should be written with a space between it and the bracket starting the conjunction. This was not being done, and has now been fixed. Example: not((a,b,c)) should be written: not (a,b,c), rather than not(a,b,c) which looks like a functor called not with arity 3.
  221.  
  222. • various little bugs in the debugger cleaned up.
  223.  
  224. • actions called from Open Prolog Startup or Open Prolog Options could not be interrupted with command-(.). Fixed.
  225.  
  226. • a bug which caused Open Prolog to put one character at the end of an empty file when the file was simply opened and closed has been fixed. What was happening was that Open Prolog was trying to discover its access priviliges to the file by writing the first byte back out. If the file was empty, the byte was bogus and wasn't being removed.
  227.  
  228. • a bug in the code for ! caused two kinds of problems occasionally when \+ or -> was used. A symptom of the first problem was a 'tr error' message or a straightforward crash. A symptom of the second error was that a 'tr error' or crash would occur after aborting from a program which used \+ or ->. Fixed.
  229.  
  230. • printing sometimes hung up due to a faulty memory requester. Fixed.
  231.  
  232. • a formatting infelicity when listing a disjunction of goals has been repaired.
  233.  
  234. •    a bug in the DCG parser has been fixed which caused a fatal diagnostic error
  235. whenever a Definite Clause containing a disjunction was to be translated.
  236.  
  237. • a bug in read/1, get/1 and get0/1 has been fixed. The bug occured
  238. when the term or character read from the input stream couldn't
  239. unify with the argument supplied.
  240. When unification fails like that, the predicate should have failed, but 
  241. because of the bug, the call succeeded.
  242. The bug has been fixed.
  243.  
  244. • spy, nospy and spying were invisible! - fixed
  245.  
  246. • listing always returned a bogus error - fixed
  247.  
  248. • a parsing bug occured where a postfix operator of more that 1000 was incorrectly used. Instead of reporting the error, the parser crashed. - fixed.
  249.  
  250. - 1.0d36
  251. •• New features:
  252. (Summary: ; -> \+ and ¬ implemented fully; print/1 improved; trace/1 rewritten with spy points)
  253.  
  254. •    disjunction (';'/2), if-then ('->'/2), if-then-else, and \+ now work properly with respect to cuts, and conform to the ISO Prolog draft. They are also considerably faster than before.
  255. • The symbol ¬ (i.e. option-l) is acceptable instead of \+ . This use of ¬ is not standard, so programs using ¬ won't work on other Prologs without modification.
  256.  
  257. • print/1 has been revised to call portray/1 recursively on arguments. Before, it used only called portray/1 at the top level.
  258. The trace handler and the top-level loop now uses print/1 to output arguments, so you can modify their behaviour by writing specialised portray/1 handlers.
  259.  
  260. • trace/1 has been substantially rewritten to handle control calls properly. It's also prettier.
  261. The control calls are ;/2 \+/1 ,/2 -> (i.e. disjunction, negation, conjunction, if-then and if-then-else).
  262.  
  263. The revised trace handler also supports a limited form of spying.
  264.  
  265. The trace handler is a specialised interpreter, written in Prolog, to interpret Prolog programs. It has been built 'for comfort and not for speed', and it is about twenty times slower than normal. In addition, tail recursion has to be switched off for debugging, so stacks can easily overflow during debugging.
  266.  
  267. Five new built-ins and one new hook are associated with trace/1.
  268. -> spy(Predicate) This sets the trace handler to stop when the predicate is encountered. If your are tracing through code, you can switch off debug listing (using 'leap'), until a spy point is encountered. A spy point is almost identical to a breakpoint in a conventional language debugger.
  269. -> nospy(Predicate) This removes the 'spy point' from this predicate.
  270. -> spying. This lists the predicates that are currently marked with spy points.
  271. -> useDebugWindow(OldWindow,NewWindow) NewWindow should be set to the name of a window in which the tracing information should be displayed, or enter 'no' if you want to use the Worksheet.
  272. By default, a window called 'Open Prolog Debug Window' is used.
  273. -> leash(Port,OldState,NewState). The ports are call, exit, redo and fail. If leashing is on then the trace will stop to allow you to enter a command. If leashing is off, the trace information will be written and tracing will continue without a break.
  274. By default, leashing is on at all four ports.
  275. -> debugStartAction is an optional predicate which will be executed at the start of a trace, after the trace window (if any) has been opened. You could use if, for example, to write out the date and time when debugging started, by defining the following clause in your startup or options file:
  276.  
  277. debugStartAction :-
  278.         'system$seconds'(S),
  279.         'system$date'(S,D),
  280.         'system$time'(S,T),
  281.         nl,
  282.         write(D),
  283.         write(', '),
  284.         write(T),
  285.         nl.
  286.  
  287. • a new built-in 'get$error$string'(Number,Atom) has been added. If Number is a Macintosh-generated error number, then Atom will be unified with the error message.
  288.  
  289.  
  290.  
  291. •• Bug Fixes:
  292.  
  293. • if the worksheet is already open, it can't get the message out -- fixed.
  294.  
  295. • unnecessary debug message if stackAdjust is called by accessCode -- removed
  296.  
  297. • current_op/3 didn't work if either of first two arguments were instantiated -- fixed
  298.  
  299. • fixed bugs in clause/2 so that it obeys the 'logical' semantics of assert and retract,
  300. and so that gc will be done properly taking account of alternatives still
  301. under consideration in clause/2.
  302.  
  303. • local stack usage reduced a little by cleaning up more thoroughly after built-ins.
  304.  
  305. • fixed a bug in clause/2 which occasionally caused in a crash after a gc, or else a frame number to be returned as a goal (thereby crashing the trace/1 debugger).
  306.  
  307. • fixed a bug in compare/3 so that it unifies the first argument with the correct atoms for <, > or =. Previously it used functors </2, >/2 and =/2. They looked the same but weren't.
  308.  
  309. • fixed a bug in trace/1 which caused it to ignore cuts being traced (trace has been revised - see above).
  310.  
  311. • fixed a bug in retract/1 which caused, say, retract((t:-X)) not to work with a clause like t:-a,b,c. This was because all variables in the tail were converted into call(_) before looking for a clause to retract, giving retract((t:-call(Y)) for the example above, which is clearly wrong. retract/1 now works properly on backtracking. It used to skip every second elegible clause, or something like that. In fact, retract/1 was very weird.
  312.  
  313. • fixed a bug in 'system$menu'/10 so that special characters (e.g. /) are not interpreted in a menu name.
  314.  
  315. • abolish/2 now removes normal and external predicates only. Hitherto it could also remove bips!
  316.  
  317. • listing/1 generates an error message when presented with an unusable argument.
  318.  
  319. - 1.0d35
  320. • External Predicates: New eventsVersion number due to internal changes incompatible with previous versions. If you have built your own external predicates, you'll need to recompile them with the new 'prlx definitions' file. If you forget to, you'll get messages saying some external predicates have been disabled.
  321. • Alerts were disabled before the worksheet came up, causing the system to hang if it tried to display an error message on startup.
  322. • Accepts as input numeric strings of the form N'MMMMM where N is a base, from 2 to 9, and M is the number to that base. Not much error checking is done! Doesn't accept 0x... for hex, nor 0'c for char code yet.
  323. • Consult & reconsult now have hooks to term_expansion/2. Every time a term (e.g. a clause) is read during consult or reconsult, it is first passed to term_expansion(Term,ExpandedTerm) for possible expansion. You can add user defined expansion code here by writing your own term_expansion/2 predicate. For speed, it is important that the first argument is not just a variable, but is the skeleton of the kind of term that can be handled - this way, time won't be wasted calling your term_expansion code on every clause. The expanded output can include DCG forms, as it is passed through the DCG expander before finally being asserted.
  324. • Major bug fix in assert assembler. (How can such a bad bug stay in a system so long?) This bug may have been responsible for crashes during extended use of the debugger, and for crashes when the clause/2 bip is used as a clause generator.
  325. • 'system$list$clause'/2 will take the arguments as produced by clause/2 and pretty-list them (well kinda-pretty anyway).
  326.  
  327. - 1.0d34
  328. • Fixed a stupid omission which made1.0d33 crash on opening in a System 6 System
  329. • Command-(.) is more reliable; works even when bips are being executed exclusively.
  330. • 'beep' and 'read' do notifications from background.
  331. • Alert and dialog calls do notifications from background.
  332. • New external predicates:
  333.  'system$start$notification'(MessageAtom,SoundNameAtom).
  334.  e.g.:
  335.  'system$start$notification'('This is a Notification Message','uh-oh').
  336.  
  337.  % if the message is '', no alert is shown. If the sound is 'beep' the
  338.  %standard sound is used; otherwise the named sound will be used if found.
  339.  
  340.  'system$stop$notification'.
  341.  
  342.  'system$in$foreground'
  343.  %true when Open Prolog is running in the foreground.
  344. • The 'Consult Front Window' command key has been changed to B to avoid clash with Copy
  345. • A Balloon for the Open Prolog Icon on the Finder Desktop.
  346. • 'system$menu' now recognises the menu 'BalloonHelp' (case of letters is important here) as specially referring to System 7's Balloon Help Icon on the right of the menu bar. So you can add and remove menu items from here. In System 6, anything with a menu name of BalloonHelp will be ignored.
  347. • When you open an file from the Finder, Open Prolog now sets the standard file dialogs to point to the folder the file resides in.
  348. • New external predicate 'system$standard$file$directory'(OldVol,OldDirID,NewVol,NewDirID).
  349. This returns the current volume number and directory IDs of the folder the standard file dialogs are pointing to, and sets them to NewVol and NewDirID. To check current values, use:
  350. 'system$standard$file$directory'(V,D,V,D).
  351. • Built-in predicates:
  352. 'system$get$directory'(CurrentDirectoryNumber), %note - not DirID
  353. 'system$set$directory'(NewDirectoryNumber),
  354. 'system$get$directory'(Kind,DirectoryNumber). {Kind = application or current}
  355. • Open Prolog is a bit smarter now when looking for temporary space during garbage collection. In System 7, it will use temporary memory. (Running out of space during garbage collection causes the 'out of recur space' diagnostic to appear.)
  356. •    Some bugs handling large numbers of names (atoms/functors) have been removed. Better allocation of name space and more reliable warnings of unhappiness… Works fairly well up to 8MB of allocation.
  357. •    'system$menus' really works as described in Open Prolog Extras now(!)
  358.  
  359. - 1.0d33
  360. 1. Some bugs removed, particularly a pernicious bug whereby OP very occasionally forgot to uninstantiate a variable on backtracking.
  361. 2. trace/1 had been renamed ptrace/1 in 1.0d31 & 1.0d32. Now it's back…
  362. 3. Opening and Printing from the desktop now implemented in System 7 only.
  363. 4. 'system$window$open$new$window' introduced & 'system$window$open$file$window' modified to work only with existing files.
  364. 5. Holding down the shift key reverses the find/search direction.
  365. 6. Undo works for error messages inserted in files by 'Show Syntax Error'.
  366. 7. Arity of 'system$menu' has changed to allow the generated menu number to be returned.
  367. 8. 'system$machine$kind'/1 (System 7 Only).
  368. 9. Some problems with locked or read-only volumes and files cured.
  369.  
  370. - 1.0d31 & 1.0d32
  371. 1. Many bugs fixed, principally sort/2 now merges identical terms, not unifiable ones as before (sometimes).
  372. 2. About 10% faster.
  373. 3. System 7 'Required' AppleEvents now supported (barely).
  374. 4. External Predicates can now see incoming events, including High Level events. Interesting possibilities for scripting, etc.
  375.  
  376. - 1.0d30
  377. 1. Print Selection works
  378. 2. Menus have been re-arranged and some tantalising new items introduced…
  379. 3. Printing from the desktop isn't done at present. A bug giving the 'can't do'
  380. message has been removed.
  381. 4. A bug in 'system$clause'/3, causing it to crash when gc was done in a backtrack
  382. has been fixed.
  383.  
  384. - 1.0d29
  385. 1. Arrow keys implemented: Command-Arrows and Command-Option-Arrows.
  386. 2. Option-Return does the opposite of whatever is specified by the the auto-indent
  387. menu selection.
  388. 3. 'system$answer$mode'(CurrentMode,NewMode) added - allowable values 'terse' and
  389. 'verbose'. 'verbose' is default.
  390.  
  391. - 1.0d28
  392. 1. Fix a bug that occurs after the 'out of recur space' diagnostic appears.
  393. 2. Add the choice between 'verbose' and 'terse' answering modes.
  394. 3. Added progress bar - look for 'system$show$progress', 'system$hide$progress',
  395. 'system$set$progress'(Numerator,Denominator) - this puts gray in the appropriate
  396. fraction of the progress bar.
  397. 4. 'system$get$file$size'(FileName,ByteSize,Error). - An Error of 0 means OK.
  398.  'system$get$file$size'(joe,ByteSize,Error).
  399.  
  400. - 1.0d27
  401. Behaviour in tight memory situations improved a little. Discarded use
  402. of System 6 Multifinder Memory, instead updated to use temporary memory
  403. gracefully under System 7.
  404. 'system$random' now works with a negative range.
  405.  
  406. - 1.0d26
  407. 1.    Undo finally implemented!
  408. 2.  Minor cosmetic changes to minimise junk on worksheet (further changes in d28).
  409. 3.  You can add menus to Open Prolog. See 'Open Prolog Extras' for details.
  410. 4.  Bug fix - a bug which crashed Open Prolog when a systen predicate was
  411.     stopped by command-. has been removed.
  412.  
  413. - 1.0d25 Bug Fixes - name/2 with numbers, serious memory Management
  414. garbage collection errors fixed. 'system$alert'/1 replaced by 'system$alert'/4
  415. 'system$confirm'/4 introduced also. Default folder changed on startup - see text.
  416.  
  417. - 1.0d24 Bug Fixes (multiple operator definitions, command-.), introduction of a
  418. status bar, use of 'Syserrs.err' for error messages…
  419.  
  420. - 1.0d23, 1.0d22 & 1.0d21 Bug Fixes
  421.  
  422. -1.0d20
  423. 1. Add garbage collection to the code space - findall without tears!
  424. 2. Fix some odd behaviour of the debugger. It seemed to wander off
  425. sometimes…
  426.  
  427. -1.0d18
  428. 1. Animated Cursor to stop it resting or sleeping on a long calculation in a
  429. Portable.
  430.  
  431. -1.0d17
  432. 1. Cosmetic improvements, particularly multi-screen handling.
  433. 2. New window-handling predicates.
  434. 3. External Predicate Interface Inprovement
  435.  
  436. - 1.0d16
  437. 1.    A crash-without-warning bug has been cured.
  438. 2.    A bug in call(X) which declared a call like call((read(X),X)) illegal because
  439. the second call was uninstantiated has been cured.
  440. 3.    The DCG compiler has been changed a little.
  441. 4.    Various cosmetic improvements.
  442. 5.    A number of extra predicates to handle window I/O have been added.
  443.  
  444. - 1.0d15
  445. 1. A restriction which required all <ENTER>ed text (including commands)
  446. to be on the Worksheet has been removed.
  447. 2. Sometimes the way in which part of a line was picked for selection
  448. was a little unpredictable. This has been cured.
  449. 3. A -192 warning caused by a harmless fault in the System
  450. when DA Menuz and Suitcase were present has been removed.
  451.  
  452. - 1.0d14
  453. Initial Release
  454.